<?php
/**
 * mysqli工具类
 * @author hetf
 *
 */
class MysqliUtils {
	const HOST = 'localhost'; // 数据库服务器地址
	const USERNAME = 'root'; // 用户名
	const PASSWORD = '123456'; // 密码
	const DBNAME = 'test'; // 数据库名
	const CHARSET = 'utf8'; // 字符集
	                        
	// 数据库连接实例
	private $conn;
	
	/**
	 * 构造实例化连接
	 * 设置字符集
	 */
	function __construct() {
		
		// 获取连接实例
		$this->conn = @ new mysqli ( self::HOST, self::USERNAME, self::PASSWORD, self::DBNAME );
		
		// 连接错误 ,不使用连接实例是因为创建失败 实例不存在
		if (mysqli_connect_errno ()) {
			die ( mysqli_connect_error () );
		}
		
		// 设置字符集
		$this->conn->query ( 'set names ' . self::CHARSET );
	}
	
	/**
	 * 获取一行数据
	 *
	 * @param string $query        	
	 * @return array NULL
	 */
	public function findOne($query) {
		$result = $this->conn->query ( $query );
		if (! $result) {
			die ( 'sql语句错误 ' . $this->conn->errno . ':' . $this->conn->error );
		}
		if (@$row = $result->fetch_assoc ()) {
			return $row;
		}
		
		// 释放结果集
		$result->close ();
		return null;
	}
	
	/**
	 *
	 * @param unknown_type $query        	
	 */
	public function update($query) {
		$result = $this->conn->query ( $query );
		if (! $result) {
			die ( 'sql语句错误 ' . $this->conn->errno . ':' . $this->conn->error );
		}
		return $this->conn->affected_rows;
	}
	
	/**
	 *
	 * @param string $query        	
	 */
	public function delete($query) {
		return $this->update ( $query );
	}
	
	/**
	 *
	 * @param string $query        	
	 */
	public function insert($query) {
		$result = $this->conn->query ( $query );
		if (! $result) {
			// 错误号与错误信息
			die ( $this->conn->errno . ':' . $this->conn->error );
		}
		return $this->conn->insert_id;
	}
	
	/**
	 *
	 * @param string $query        	
	 * @return array
	 */
	public function findList($query) {
		$result = $this->conn->query ( $query );
		
		if (! $result) {
			die ( 'sql语句错误 ' . $this->conn->errno . ':' . $this->conn->error );
		}
		
		$resultList = array ();
		while ( @ $row = $result->fetch_assoc () ) {
			$resultList [] = $row;
		}
		
		// 释放结果集
		$result->close ();
		return $resultList;
	}
	/**
	 * 析构方法
	 * 关闭连接
	 */
	function __destruct() {
		if (! mysqli_connect_errno ()) {
			$this->conn->close ();
		}
	}
}

?>